package com.metal.gear.certification.service;




import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.metal.gear.certification.entity.po.SysUser;
import com.metal.gear.certification.entity.po.SysUserDepart;
import com.metal.gear.certification.entity.vo.dept.DepartIdModel;

import java.util.List;

/**
 * <p>
 * SysUserDpeart用户组织机构service
 * </p>
 * @Author ZhiLin
 *
 */
public interface ISysUserDepartService extends IService<SysUserDepart> {
	

	/**
	 * 根据指定用户id查询部门信息
	 * @param userId
	 * @return
	 */
	List<DepartIdModel> queryDepartIdsOfUser(String userId);




	/**
	 * 根据部门id查询用户信息
	 * @param depId
	 * @return
	 */
	List<SysUser> listUserByDepId(String depId);

	/**
	 * 根据部门id查询userId
	 * @param depId
	 * @return
	 */
	List<String> listUserIdByDepId(String depId);

	/**
	 * 根据部门id查询用户部门关联关系
	 * @param depId
	 * @return
	 */
	List<SysUserDepart> listByDepId(String depId);



  	/**
	 * 根据部门code，查询当前部门和下级部门的用户信息
     * @param depCode 部门code
     * @param realname 真实姓名
     * @return List<SysUser>
	 */
	List<SysUser> queryUserByDepCode(String depCode, String realname);

	/**
	 * 用户组件数据查询
	 * @param departId
	 * @param username
	 * @param pageSize
	 * @param pageNo
     * @param realname
     * @param id
	 * @return
	 */
	IPage<SysUser> queryDepartUserPageList(String departId, String username, String realname, int pageSize, int pageNo, String id);

    /**
     * 获取用户信息
     * @param departId
     * @param keyword
     * @param pageSize
     * @param pageNo
     * @return
     */
    IPage<SysUser> getUserInformation(String departId, String keyword, Integer pageSize, Integer pageNo);

	/***
	 * 通过userId，查询关联关系
	 *
	 * @param userId
	 * @return
	 */
	List<SysUserDepart> listByUserId(String userId);

	/***
	 *通过userId，查询departId
	 * @param userId
	 * @return
	 */
	List<String> listDepartIdByUserId(String userId);

	/***
	 * 通过userId和departId进行匹配删除
	 */
	Boolean deleteByUserIdAndDepartId(String userId, String departId);

	/***
	 * 通过userId进行匹配删除
	 */
	Boolean deleteByUserId(String userId);
}
